clear all; close all; clc;

% Внутренние параметры
R = 120; % Ом
C = 33e-12; % Ф
Rd = 40e3; % параметры диода
rd = 1.25;
Uo = 0.6;

f0 = 5e6; % частота

% ось времени
T = 1 / (10000*f0);
t = 0:T:(15 * 1/f0);
lt = length(t);

% выделение памяти
Uc = nan(1, lt);
Ur = nan(1, lt);
Ud = nan(1, lt);
dUc = nan(1, lt);
i = nan(1, lt);

f = f0;
A = [0; 1; 2; 3];

U = nan(length(A), lt);
for n = 1:length(A)
    
    E = A(n)*cos(2*pi*f*t);
    
    % Начальное состояние
    Uc(1) = 0; % Начальное напряжение конденсатора
    i(1) = 0; % В начальный момент ток в цепи отсутствует
    dUc(1) = 0;
    Ur(1)=R*i(1);
    Ud(1)=E(1) - i(1)*R;
    
    for k = 2:lt
        % 
        Ud(k) = E(k) - Ur(k-1) - Uc(k-1);
        if Ud(k) < Uo
            i(k) = Ud(k)/Rd;
        else
            i(k) = ( Ud(k)-Uo )/rd;
        end
        
        dUc(k-1) = i(k-1) / C;
        Uc(k) = Uc(k-1) + dUc(k-1)*T;
        
        Ur(k) = i(k)*R;
        
    end
    
    U(n,:) = Uc;
end

figure(1);
plot(t*1e9, [E; U]);
xlabel('t, ns')
ylabel('E, Uc, Volt')
% xlim([0 0.05 * 1/f0*1e9]);
legend('E(t|A=3)', 'Uc(t|A=0)', 'Uc(t|A=1)', 'Uc(t|A=2)', 'Uc(t|A=3)')
grid on
